package ogmios.components.archivers;
import java.util.*;
import java.io.*;
import javax.swing.tree.*;
/**
 * An interface for archiving files.
 */
public interface Archiver
{
 /**
 * Creates an archive at the location of the outputFile, containing files.<br>
 * For each ArchiveProperty in properties(), the properties map argument ought to have a non-null
 * value.
 */
 void archive(File outputFile, TreeModel files, Map<String, Object> properties) throws Throwable;
 /**
 * Stops any current archiving.
 */
 void stop();
 /*
 * Returns whether this Archiver is currently archiving
 */
 boolean isRunning();
 /**
 * Get name of Archive Type.
 */
 String getName();
 /**
 * Get list of properties this Archiver expects
 */
 Map<String, ArchiveProperties> properties();
 /**
 * The type of properties an archiver can request
 */
 public static enum ArchiveProperties
 {
  /**
  * A true or false value
  */
  BOOLEAN,
  /**
  * A single line of text
  */
  SINGLE_STRING,
  /**
  * A file object. The file does not need to exist yet, and in most cases, probably will not.
  */
  FILE,
  /**
  * Multiple lines of text
  */
  MULTI_LINE_STRING
 }
}
